/**
 * @file auth.js
 * @description 通用的认证工具函数 (Token 管理)
 */

// 使用一个常量来存储 Token 的键，便于管理和修改
const ACCESS_TOKEN_KEY = 'axiom_access_token';
const REFRESH_TOKEN_KEY = 'axiom_refresh_token';

// 默认存储引擎为 localStorage
const storage = localStorage;

/**
 * 获取访问令牌 (Access Token)
 * @returns {string | null}
 */
export function getAccessToken() {
  return storage.getItem(ACCESS_TOKEN_KEY);
}

/**
 * 设置访问令牌 (Access Token)
 * @param {string} token
 */
export function setAccessToken(token) {
  if (token) {
    storage.setItem(ACCESS_TOKEN_KEY, token);
  } else {
    storage.removeItem(ACCESS_TOKEN_KEY);
  }
}

/**
 * 获取刷新令牌 (Refresh Token)
 * @returns {string | null}
 */
export function getRefreshToken() {
    return storage.getItem(REFRESH_TOKEN_KEY);
}

/**
 * 设置刷新令牌 (Refresh Token)
 * @param {string} token
 */
export function setRefreshToken(token) {
    if (token) {
        storage.setItem(REFRESH_TOKEN_KEY, token);
    } else {
        storage.removeItem(REFRESH_TOKEN_KEY);
    }
}


/**
 * 移除所有令牌信息
 * 通常在登出或认证失败时调用
 */
export function removeTokens() {
  storage.removeItem(ACCESS_TOKEN_KEY);
  storage.removeItem(REFRESH_TOKEN_KEY);
}


/**
 * 检查当前是否存在有效的访问令牌
 * @returns {boolean}
 */
export function isLoggedIn() {
  return !!getAccessToken();
} 